package jp.co.libgate.service;

import java.util.Map;

import jp.co.libgate.common.exception.AlreadyPayedIdException;
import jp.co.libgate.common.exception.NoMailException;
import jp.co.libgate.meta.RegistUserMeta;
import jp.co.libgate.meta.UserMeta;
import jp.co.libgate.model.Attend;
import jp.co.libgate.model.RegistUser;
import jp.co.libgate.model.User;

import org.slim3.datastore.Datastore;
import org.slim3.util.BeanUtil;

import com.google.appengine.api.datastore.Transaction;

public class UserService {

    //メールアドレス受け付ける
    //メアドが登録されていれば
    //IDが登録されていれば
    //すでに登録済みのエラー
    //IDが登録されていなければ
    //払いだす
    //メアドが登録されていなければ
    //使えませんエラー
    public RegistUser regist(Map<String, Object> input) {
        String mail = (String)input.get("email");
        if (mail == null){
            throw new NoMailException();
        }
        RegistUserMeta ru = RegistUserMeta.get();
        RegistUser registuser  = Datastore.query(RegistUser.class)
        .filter(ru.email.equal(mail))
        .asSingle();
        if(registuser != null){
            throw new AlreadyPayedIdException();
        }

        UserMeta u = UserMeta.get();
        User user  = Datastore.query(User.class)
        .filter(u.email.equal(mail))
        .asSingle();

        if(user == null){
            throw new NoMailException();
        }

        Transaction tx = Datastore.beginTransaction();
        registuser = new RegistUser();
        registuser.setEmail(user.getEmail());
        registuser.setName(user.getName());
        Datastore.put(registuser);
        tx.commit();

        return registuser;
    }

    public void initialize(){

        Transaction tx = Datastore.beginTransaction();
        User user = new User();
        user.setEmail("okegawa@lib-gate.co.jp");
        user.setName("桶川　広克");
        Datastore.put(user);
        user.setEmail("hieda.ryuichi@lib-gate.co.jp");
        user.setName("檜枝　龍一");
        Datastore.put(user);
        user.setEmail("kanno.koutarou@lib-gate.co.jp");
        user.setName("神野　光太郎");
        Datastore.put(user);
        tx.commit();
        return ;
    }
}
